/** 
 * Copyright (C), 2010-2012, AIYOU Software Co.,Ltd. ALL RIGHTS RESERVED. 
 * File name:SysUserService.java
 * Version:1.0
 * Date:Dec 6, 2011
 * Description: 
 * author:whh
 */
package com.tietiao.service.sysuser;

import java.util.List;

import com.tietiao.action.bg.form.BgUserForm;
import com.tietiao.common.exception.DataToManyException;
import com.tietiao.common.util.PageModel;
import com.tietiao.dao.model.SysUser;
import com.tietiao.service.bean.SysUserBean;

public interface SysUserService {

	/**
	 * 功能：添加新用户
	 * 
	 * @author: whh
	 * @Date:2011-12-06
	 * 
	 * @return 用户是否添加成功 0：为失败 1:成功
	 */
	public int insertSysUser(SysUser sysUser);

	/**
	 * 功能：更新用户信息
	 * 
	 * @author: whh
	 * @Date: 2011-12-06
	 * 
	 * @return 用户是否更新成功 1：成功 0：失败
	 */
	public int updateSysUser(SysUser sysUser);

	/**
	 * 
	 * 功能：通过id号加载用户信息
	 * 
	 * @author: whh
	 * @Date: 2011-12-06
	 * 
	 * @return 返回用户信息
	 */
	public SysUser loadSysUserById(int id);

	/**
	 * 
	 * 功能：通过邮箱或者昵称来查询用户信息(登陆时用、注册时查询是否已占用，非逻辑删除)
	 * 
	 * @author: whh
	 * @Date: 2011-12-06
	 * 
	 * @return 返回用户信息，如果不存在，则返回null
	 */
	public SysUser loadSysUserByCodeOrEmail(String str);

	/**
	 * 
	 * 功能：
	 * 
	 * @author: whh
	 * @Date: Dec 11, 2011
	 * 
	 * @param code
	 * @return
	 * @throws DataToManyException
	 */
	public SysUser loadAdminByPetName(String petName, String password)
			throws DataToManyException;

	/**
	 * 
	 * 功能：删除用户信息，此处应为停用（逻辑删除 后台使用）
	 * 
	 * @author: whh
	 * @Date: 2011-12-06
	 * 
	 * @return 是否删除成功
	 */
	public int deleteSysUserById(int id);

	/**
	 * 
	 * 功能：分页查询用户信息（后台列表页面使用）
	 * 
	 * @author: whh
	 * @Date: 2011-12-06
	 * 
	 * @param criteria
	 *            查询条件
	 * @return 所有用户列表
	 */
	public PageModel<SysUser> getPageModel(int pageSize, int pageNum,
			SysUserBean userBean);

	/**
	 * 
	 * 功能：查询关注与被关注好友列表
	 * 
	 * @author: whh
	 * @Date: 2011-12-27
	 * 
	 * @param start
	 *            开始
	 * @param limit
	 *            返回条数
	 * @param userId
	 *            ！=0 我的我好友
	 * @param sysUserId
	 *            ！=0 关注我的好友
	 * @param petName
	 * 			      昵称
	 * @return
	 */
	public List<SysUser> selectFriendsUser(int start, int limit,
			Integer userId, Integer sysUserId, String petName, Integer groupId);

	/**
	 * 
	 * 功能：获取喜欢某热门标签的用户
	 * 
	 * @author: whh
	 * @Date: 2012-1-8
	 * @param lableName
	 *            标签名称
	 * @return
	 */
	public List<SysUser> selectAttHotLable(String lableName);

	/**
	 * 功能：我关注的好友或关注我的好友的数量
	 * 
	 * @author: whh
	 * @Date: 2011-12-27
	 * @param userId
	 * @param sysUserId
	 * @return
	 */
	public int selectFriendsUserCount(Integer userId, Integer sysUserId);

	/**
	 * 
	 * 功能：查询用户列表功能(后台功能)
	 * 
	 * @author: zhijian.zhang
	 * @Date: 2011-12-30
	 * 
	 * @param bgUserForm
	 * @param start
	 * @param limit
	 * @param sortColumn
	 *            排序字段，对应表结构的字段名
	 * @param sort
	 *            排序方式 ASC OR DESC
	 * @return
	 */
	public PageModel<SysUser> getUserPageModel(BgUserForm bgUserForm,
			int start, int limit, String sortColumn, String sort);

	/**
	 * 
	 * 功能：批量更新用户类型或者激活状态(后台用户管理)
	 * 
	 * @author: zhijian.zhang
	 * @Date: 2012-1-2
	 * 
	 * @param type
	 * @param isActive
	 * @param password
	 * @param userIds
	 *            用户ID字符串 多个字符以逗号相隔
	 * @return
	 */
	public int batchUpTypeOrActives(Integer type, Integer isActive,
			String password, String userIds);

	/**
	 * 
	 * 功能：通过外部接口ID获得用户信息
	 * 
	 * @author: whh
	 * @param openId
	 * @return
	 */
	public SysUser getSysUserByWebService(String openId);
	/**
	 * 
	 * 功能：根据用户名查找用户
	 * @author: zhijian.zhang
	 * @Date: 2012-1-15
	 *
	 * @param petName 用户昵称
	 * @param loginUserId 当前登陆用户ID
	 * @param start
	 * @param limit
	 * @param orderByClause
	 * @return
	 */
	public List<SysUser> searchSysUsersByPetName(String petName,
			Integer loginUserId, Integer start, Integer limit,
			String orderByClause);

}
